///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Στο παρόν περιέχονται δομές και διαδικασίες που αφορούν στο πρώτο κάθετο πάνελ εργαλείων
// που βρίσκεται μεταξύ της περιοχής θαμώνων και τραπεζιών (kpanel). Αυτό το πάνελ περιέχει
// κυρίως εργαλεία που αφορούν περισσότερο στους παίκτες και στα τραπέζια και λιγότερο στο
// παιχνίδι.

Kafenio.kpanel = {
	adamo: 1,	// τρέχουσα ομάδα εργαλείων
	omadaMax: 2,	// τελευταία ομάδα
	direction: 1,	// φορά αλλαγής εργαλείων
};

Kafenio.kpanel.setup = function() {
	Kafenio.kpanel.DOM = $('<div>').addClass('Vpanel').
	append(Kafenio.kpanel.enalagiButtonDOM = Kafenio.panel.enalagiButton(Kafenio.kpanel)).
	append(Kafenio.kpanel.metakinisiButtonDOM = Kafenio.panel.metakinisiButton(Kafenio.kpanel)).
	append(Kafenio.panel.arxikiButton(Kafenio.kpanel, 1)).

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Ομάδα 1
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<img>').
	data('omada', 1).
	data('check', function() {
		return Kafenio.egoTrapezi();
	}).
	data('refresh', function(img) {
		if (Kafenio.oxiTsoxa()) img.attr({
			src: Client.server + 'ikona/panel/misc/trapezi.png',
			title: 'Άποψη τραπεζιού',
		});
		else img.attr({
			src: Client.server + 'ikona/panel/misc/kafenio.png',
			title: 'Άποψη καφενείου',
		});
	}).
	on('click', function(e) {
		e.stopPropagation();
		if (Kafenio.isTsoxa()) Kafenio.tsoxaClose();
		else Kafenio.tsoxaActivate();
	})).

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<img>').
	data('omada', 1).
	data('filtro', false).
	data('refresh', function(img) {
		if (img.data('filtro')) img.attr({
			src: Client.server + 'ikona/panel/misc/fakos.png',
			title: 'Ακύρωση φίλτρου ονομάτων',
		});
		else img.attr({
			src: Client.server + 'ikona/pss/anazitisi.png',
			title: 'Εφαρμογή φίλτρου ονομάτων',
		});
	}).
	on('mouseenter', function(e) {
		e.stopPropagation();
		Kafenio.anazitisiInputDOM.addClass('pssInputCandi');
	}).
	on('mouseleave', function(e) {
		e.stopPropagation();
		Kafenio.anazitisiInputDOM.removeClass('pssInputCandi');
	}).
	on('click', function(e) {
		Kafenio.inputRefocus(e);
		$(this).data('filtro', !$(this).data('filtro')).
		data('refresh')($(this));
		// TODO: Εφαρμογή/ακύρωση φίλτρου στους ενεργούς παίκτες.
	})).

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append($('<img>').data('omada', 1).attr({
		src: Client.server + 'ikona/panel/misc/resize.gif',
		title: 'Επαναδιάταξη καφενείου',
	}).
	on('click', function(e) {
		Kafenio.inputRefocus(e);
		delete Kafenio.ofelimoH;
		delete Kafenio.ofelimoW;
		$(window).trigger('resize');
	})).

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append(Kafenio.panel.pliktro.adsSwitch(Kafenio.kpanel.omadaMax)).
	append(Kafenio.panel.pliktro.motdSwitch(Kafenio.kpanel.omadaMax)).

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Ομάδα 2
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append(Panel.kinito(Kafenio, Kafenio.kpanel.omadaMax)).
	append(Panel.soundEntasi(Kafenio, Kafenio.kpanel.omadaMax)).

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	append(Kafenio.panel.arxikiButton(Kafenio.kpanel, -1));
	Kafenio.panel.oplismos(Kafenio.kpanel);
	Kafenio.kpanelDOM.empty().append(Kafenio.kpanel.DOM);

}

Kafenio.kpanel.metakinisi = function() {
	Kafenio.kpanel.DOM.
	on('mousedown', function(e) {
		var
		x0 = e.pageX,
		thamonesW = Kafenio.thamonesDOM.width();
		trapeziaW = Kafenio.trapeziaDOM.width();
		pssW = Kafenio.pssDOM.width();

		e.preventDefault();
		e.stopPropagation();

		Kafenio.kpanel.DOM.css('cursor', 'move');
		Kafenio.sekinisi = true;
		Kafenio.kpanel.metakinisiButtonDOM.addClass('iconCandi');

		// Η διαδικασία της παρακολουθεί την κίνηση του δείκτη και τελειώνει με
		// το mouseup. Αυτά τα events τα παρακολουθούμε σε όλη την έκταση του
		// document και όχι μόνο στο πάνελ.

		$(document).off('mousemove mouseup').

		// Κατά την κίνηση του δείκτη υπολογίζουμε τη διαφορά κατά πλάτος σε σχέση
		// με την αρχική θέση και αυξομειώνουμε ανάλογα τις περιοχές.

		on('mousemove', function(e) {
			var w, dw;

			e.stopPropagation();
			sW = pssW;

			dw = e.pageX - x0;

			// Αν επιχειρείται μετακίνησης προς τα αριστερά, πρέπει να μειωθεί το
			// πλάτος της στήλης των παικτών και να αυξηθεί το πλάτος των τραπεζιών.

			if (dw <= 0) {
				w = thamonesW + dw;
				if (w < 0) w = 0;
				dw = w - thamonesW;

				pW = thamonesW + dw;
				tW = trapeziaW - dw;
			}

			// Αλλιώς επιχειρείται μετακίνηση προς τα δεξιά, οπότε πρέπει να αυξηθεί
			// το πλάτος των παικτών και να μειωθούν τα τραπέζια και, ενδεχομένως,
			// το pss.

			else {
				w = trapeziaW - dw;
				if (w < 0) {
					tW = 0;
					pW = thamonesW + trapeziaW;
					dw -= trapeziaW;

					w = pssW - dw;
					if (w < 0) {
						sW = 0;
						pW += pssW;
						dw = pssW;
					}
					else {
						pW += dw;
						sW -= dw;
					}
				}
				else {
					pW = thamonesW + dw;
					tW = trapeziaW - dw;
				}
			}

			Kafenio.thamonesDOM.scrollSteno(pW).css('width', pW + 'px');
			Kafenio.trapeziaDOM.scrollSteno(tW).css('width', tW + 'px');
			Kafenio.pssDOM.children('.pssEnotita').scrollSteno(sW);
			Kafenio.pssDOM.css('width', sW + 'px');
			Kafenio.pss.inputWidthFix();
		}).
		on('mouseup', function(e) {
			e.stopPropagation();
			Kafenio.kpanel.DOM.css('cursor', '');
			$(document).off('mousemove mouseoff');
			Kafenio.kpanel.metakinisiButtonDOM.removeClass('iconCandi');
			if (Kafenio.sekinisi) {
				Kafenio.sekinisi = false;
				Kafenio.diastasiSave();
			}
		});
	});
}

// Με την μέθοδο "refresh" επαναδιαμορφώνουμε το DOM element του πάνελ.
// Ως παράμετρο μπορούμε να περάσουμε την επιθυμητή ομάδα εργαλείων,
// αλλιώς εμφανίζεται η τρέχουσα ομάδα.

Kafenio.kpanel.refresh = function(adamo) {
	if (adamo !== undefined) Kafenio.kpanel.adamo = 1;
	Kafenio.panel.refresh(Kafenio.kpanel);
}
